Los árboles de decisión tienen el problema de gran varianza lo que puede afectar su poder de predicción. El método Bagging o agregación Bootstrap está basado en la idea de que si tenemos un conjunto de n observaciones \(y_1,y_2,...,y_n\) y cada una posee varianza \(\sigma^2\), la varianza de la media \(\bar{y}\) está dada por \(\sigma^2/n\). De esta forma podemos minimizar la varianza y aumentar el poder de predicción separar el conjunto de entrenamiento en \(B\) conjuntos de entrenamientos y con cada uno de estos subconjuntos construimos un árbol de regresión o clasificación para luego promediar el resultado de predicción en todos los arboles construidos.
\[\hat{f}_{avg}(x)= \frac{1}{B}\sum_{b=1}^B \hat{f}^b(x)\]
library(randomForest)
## Warning: package 'randomForest' was built under R version 3.5.2
set.seed(2018)
base <- read.csv("../Bases de datos/banknote-authentication.csv")
base$class <- as.factor(base$class)
bagging <- randomForest(class ~ ., data = base, mtry = 4, ntree = 500, importance =T)
mtry =
Número de predictoras a usar en la contrucción del modelo.ntree =
Número de árboles a usar.bagging
##
## Call:
## randomForest(formula = class ~ ., data = base, mtry = 4, ntree = 500, importance = T)
## Type of random forest: classification
## Number of trees: 500
## No. of variables tried at each split: 4
##
## OOB estimate of error rate: 0.8%
## Confusion matrix:
## 0 1 class.error
## 0 755 7 0.009186352
## 1 4 606 0.006557377
Los resultados nos muestran una matriz de confución y un error para cada clase.
La técnica de árboles aleatorios es bastantes similar a la de bagging diferenciándose en que para la construcción de sus árboles cada vez que se considera una división en un árbol, una muestra aleatoria de m predictores se elige como candidatos del conjunto completo de p predictores. La división puede usar solo uno de esos m predictores. Con frecuencia se toma \(m = \sqrt p\)
random <- randomForest(class ~ ., data = base, mtry = 2, ntree = 500, importance =T)
random
##
## Call:
## randomForest(formula = class ~ ., data = base, mtry = 2, ntree = 500, importance = T)
## Type of random forest: classification
## Number of trees: 500
## No. of variables tried at each split: 2
##
## OOB estimate of error rate: 0.58%
## Confusion matrix:
## 0 1 class.error
## 0 756 6 0.007874016
## 1 2 608 0.003278689
La tasa de error OOB (Observaciones fuera de la bolsa) se refiere a el porcentaje de observaciones que no se usaron para construir los árboles.
Bosstind o maquinas de gradiente mejorado trabaja similar a Baging diferenciandoce en que los árboles son construidos secuencialmente. Cada árbol se construyen para aprender de los errores de mala clasificación de los anteriores árboles construidos.
El algoritmo del proceso esta dado a continuación:
\[\hat{f}(x)= \sum_{b=1}^B \lambda \hat{f}^b (x).\]
library(gbm)
## Warning: package 'gbm' was built under R version 3.5.2
bosting <- gbm(class ~., data = base, distribution = "bernoulli", n.trees = 50000, interaction.depth = 4, shrinkage = 0.2)
distribution =
bernoulli para variables categóricas, gaussian para variables numéricas.shrinkage =
Parámetro \(\lambda\)n.trees=
Número de árboles a usarinteraction.depth =
Número máximo de variables en cada árbol.